import React, { Component } from 'react'
import ReactDOM from 'react-dom';
import { Modal, Form, message } from 'antd';
import { ModalForm } from '../../../components'
import { fetchData } from '../../../components/AjaxConsumer'
import store from '../../../stores'
const confirm = Modal.confirm;

const WrappedAdvancedSearchForm = Form.create()(ModalForm);
export default class UpdateFactoryPage extends Component {
    constructor(props) {
        super(props);
        this.state = {
            loading: false,
            visible: false,
            resData: null,
            submitUrl:'/base/factory/c'
        };
        //和stroes进行通信挂钩 并绑定解绑事件unsubscribe
        this.unsubscribe = store.listen((resData)=>{
            this.setState({
                resData: resData
            })
        })

        this.formAlerSize = 'small'; //弹出框的大小 只有'large'和'small'两种值 （必须,输错时默认为large）
        this.getFormData = [
            {
                type : 'hiddenInput',
                showName : 'factoryId',
                name : 'factoryId',
                initialValue : ''
            },
            {
                type : 'input',
                showName : '工厂编码',
                name : 'factoryCode',
                pattern : /^[0-9]*$/,
                errorMessage : '工厂编码为纯数字',
                max : 64,
                maxErrMsg :  '输入内容应少于64个字符',
                initialValue : '',
                required : 'required'  //选填
            },
            // {
            //     type : 'input',
            //     showName : '事业部编码',
            //     name : 'deptCode',
            //     pattern : /^[a-zA-z0-9]*$/,
            //     errorMessage : '输入内容不合法',
            //     max : 64,
            //     maxErrMsg :  '输入内容应少于64个字符',
            //     initialValue : '',
            //     required : 'required'  //选填
            // },
            {
                type : 'input',
                showName : '工厂名称',
                name : 'factoryName',
                pattern : /^[a-zA-z0-9\u4E00-\u9FA5]*$/,
                errorMessage : '输入内容不合法',
                max : 100,
                maxErrMsg :  '输入内容应少于100个字符',
                initialValue : '',
                required:'required'
            },{
                type : 'select',
                showName : '工厂类型',
                name : 'factoryType',
                optionList:[              //必填  下拉框的信息
                    // {
                    //     optionKey:'1',
                    //     optionShow:'外库'
                    // },{
                    //     optionKey:'0',
                    //     optionShow:'生产'
                    // }
                ],
                initialValue : '',
                required:'required'  
            },
            // {
            //     type : 'select',
            //     showName : '归属产业',
            //     name : 'groupCode',
            //     optionList:[
            //         {
            //             optionKey:'',
            //             optionShow:'无'
            //         }
            //     ],
            //     initialValue : '',
            //     // required:'required'  
            // },
            // {
            //     type : 'select',
            //     showName : '开启原材料库存',
            //     name : 'isOpenStorage',
            //     optionList:[              //必填  下拉框的信息
            //         {
            //             optionKey:'1',
            //             optionShow:'是'
            //         },{
            //             optionKey:'0',
            //             optionShow:'否'
            //         }
            //     ],
            //     initialValue : '1',
            //     required: true
            // },{
            //     type : 'select',
            //     showName : '开启供应商库存',
            //     name : 'isOpenSupply',
            //     optionList:[              //必填  下拉框的信息
            //         {
            //             optionKey:'1',
            //             optionShow:'是'
            //         },{
            //             optionKey:'0',
            //             optionShow:'否'
            //         }
            //     ],
            //     initialValue : '1',
            //     required: true
            // },{
            //     type : 'select',
            //     showName : '开启质检状态',
            //     name : 'isOpenHmqm',
            //     optionList:[              //必填  下拉框的信息
            //         {
            //             optionKey:'1',
            //             optionShow:'是'
            //         },{
            //             optionKey:'0',
            //             optionShow:'否'
            //         }
            //     ],
            //     initialValue : '1',
            //     required: true
            // },{
            //     type : 'select',
            //     showName : '开启下线结算',
            //     name : 'isOpenWkSeq',
            //     optionList:[              //必填  下拉框的信息
            //         {
            //             optionKey:'1',
            //             optionShow:'是'
            //         },{
            //             optionKey:'0',
            //             optionShow:'否'
            //         }
            //     ],
            //     initialValue : '1',
            //     required: true
            // },{
            //     type : 'input',
            //     showName : '提货点',
            //     name : 'userDefined3',
            //     //pattern : /[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~！@#￥%……&*（）——\-+={}|《》？：“”【】、；‘’，。、]/,
            //     pattern : /^[,a-zA-z0-9\u4E00-\u9FA5]*$/,
                
            //     errorMessage : '特殊字符只能为半角,',
            //     // max : 32,
            //     // maxErrMsg :  '输入内容应少于32个字符',
            //     initialValue : ''
            // }
        ];
    }
    //组件销毁时解绑与stores的监听
    componentWillUnmount(){
        this.unsubscribe();
    }
    //显示弹框
    showModal = () => {
        this.setState({
            visible: true,
        });
    }
    // 隐藏弹出框
    hideModal = () => {
        this.setState({
            visible: false,
        });
    }
    // 新增工厂
    addFactoryHandle = () => {
        this.setState(
            {
                submitUrl:'/base/factory/c',
                formTitle: '新增工厂'
            }
        );
        //清空input值
        this.getFormData.map( (e, index) => {
            e.initialValue = ''
        });
        this.setState({resData: null});
        this.showModal();//显示弹框
    }

    editGetInfoCallBack =(resData)=>{
        this.setState(
            {
                submitUrl:'/base/factory/u',
                resData: resData,
                formTitle: '修改工厂'
            }
            );
        this.showModal();//显示弹框
    }

    // 编辑信息
    editHandle = (rowObj) => {
        this.setState({resData: null});
        //根据对象的Id 属性获取对象信息
        let factoryId = rowObj.factoryId;
        const options= {
            url: '/base/factory/r/'+factoryId,
            type: 'get',//请求方式
            condition:{}
        };
        fetchData(this, options, this.editGetInfoCallBack);
    }
    // 删除后的回调
    deleteCallBackHandle = (resData)=>{
        let result = resData;
        //alert("提交返回数据：\n",JSON.stringify(result, null, 4));
        if (result.code == '1'){
            message.success('删除成功！');
            this.refreshHandle();
        }else {
            message.info(result.msg);
        }
    }

    // 删除工厂
    deleteHandle = (rowObj) => {
        let factoryId = rowObj.factoryId;
        // let userIdArr = [];
        // userIdArr.push(userId);
        const options= {
            url: '/base/factory/d',
            condition:{factoryId:factoryId}
        };
        let _that = this;
        confirm({
            title: '您确定要删除吗？',
            onOk() {
                fetchData(_that, options, _that.deleteCallBackHandle);
                console.log("------------删除操作------------------")
            },
            onCancel() {
                console.log("取消了删除操作")
            },
        });
    }

    // 新增/修改后的回调
    handleOk = () => {
        //debugger;
        //let result = this.state.resData;
        //console.log("提交返回数据：\n",JSON.stringify(result, null, 4));
        //if (result.code == "1"){
            this.hideModal();
            this.refreshHandle();
        //}else {
        //    alert(result.msg);
        //}

    }

    handleCancel = () => {
        //表单重置
        this.refs.modalFrom.resetFields();
        this.hideModal();
    }

    //刷新List列表
    refreshHandle = () => {
        console.log("刷新List列表")
        this.props.refreshHandle();
    }

    componentDidMount() {
        // const options= {
        //     url: '/base/factory/getGroups',
        //     type: 'post'
        // };
        // fetchData(this, options, this.dicInitCallBackHandle);

        const getFactoryType={
            url: '/base/dic/get/factory_type',
            type: 'get'
        }
        fetchData(this, getFactoryType, this.dicInitCallBackHandle_factoryType);
    }
    // //下拉框 初始化
    // dicInitCallBackHandle = (resData)=>{
    //     // console.log('resData' + JSON.stringify(resData, null, 5));
    //     let optionList = this.getFormData[5].optionList;
    //     resData.data.map( (e,index) => {
    //         let tmp = {};
    //         tmp.optionKey = e.groupCode;
    //         tmp.optionShow = e.groupName;
    //         optionList.push(tmp);
    //     });
    //     this.getFormData[5].optionList = optionList;
    // }
    //下拉框 初始化
    dicInitCallBackHandle_factoryType = (resData)=>{
        // console.log('resData' + JSON.stringify(resData, null, 5));
        let optionList = this.getFormData[3].optionList;
        resData.data.map( (e,index) => {
            let tmp = {};
            tmp.optionKey = e.dicCode;
            tmp.optionShow = e.dicName;
            optionList.push(tmp);
        });
        this.getFormData[3].optionList = optionList;
    }

    render() {
        if(this.state.resData != null &&  this.state.resData.data != null){
            let factory = this.state.resData.data;
            this.getFormData.map( (e, index) => {
                e.initialValue = factory[e.name]
            });
        }

        return(
            <Modal
                style={{top:'20px'}}
                visible={this.state.visible}
                title={this.state.formTitle ? this.state.formTitle : '填写表单'}
                onOk={this.handleOk}
                onCancel={this.handleCancel}
                width={this.formAlerSize=='large'?'1000px':'480px'}
                footer=''
            >

                <WrappedAdvancedSearchForm
                    ref="modalFrom"
                    title="工厂信息"
                    formAlerSize={this.formAlerSize}
                    formUrl={this.state.submitUrl}
                    getFormData={this.getFormData}
                    closeBox={this.handleCancel}
                    checkBox={this.handleOk} />

            </Modal>
        )
    }
}